package com.servlet.teacher;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.util.JWTTokenUtil;
import com.util.JsonUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/UserServlet")
public class UserServlet extends BaseServlet {


    protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //HttpServletRequest对象中，可以调用封装好的方法获得http协议的相关数据
         String method =  req.getMethod();//得到http协议的请求方式 post,get
        System.out.println("请求方法:"+method);
        String protocol =   req.getProtocol();//客户端使用http协议的版本
        System.out.println("客户端使用http协议的版本："+protocol);

        //获得请求头的数据:
        String language =  req.getHeader("Accept-Language");
        System.out.println("得到客户机采用的是哪个语言Accept-Language："+language);

        //Referer：客户机通过这个头，告诉服务器，客户机是从哪个页面来的
        // Referer用于防盗链或控制我们的资源(Servlet,jsp,html)允许哪些网站访问

        String referer = req.getHeader("Referer");
        System.out.println("referer的值为:"+referer);

        //淘宝网的访问地为: http://www.taobao.com ,用于可以直接在浏览器中输入该网址访问

        //还有一个种方式为 用户先打开 了百度网  http://www.baidu.com,搜索淘宝
        //在百度的搜索结果中可以点击连接跳转到 淘宝网


        //前端项目是:http://localhost:8080/
        //后端项目访问地直理:http://localhost:8088


        String userName = req.getParameter("name");
        String pwd = req.getParameter("password");
        //假设用户输入用户和密码且正确，把当前登录用户的数据存储到session中
      //  HttpSession session =  req.getSession();
     ///   session.setAttribute("loginUserInfo",userName);


        GsonBuilder gsonBuilder = new GsonBuilder();
        Gson gson = gsonBuilder.create();
        PrintWriter out = resp.getWriter();
        JsonUtil jsonUtil = new JsonUtil();


        if (referer!=null && referer.equals("http://localhost:8080/")){

            JWTTokenUtil jwtTokenUtil = new JWTTokenUtil();

            String jsonJwt =   jwtTokenUtil.getEncodeToken(userName);
            System.out.println("对用户做JWT加密后的结果为:"+jsonJwt);

            //  req.getRequestDispatcher("/loginSuccess.html").forward(req,resp);



            jsonUtil.setCode(0);
            if (language.equals("zh-CN")) {
                jsonUtil.setMsg("登录成功");
            }else{
                jsonUtil.setMsg("login sucess");
            }
            jsonUtil.setData(jsonJwt);
            out.print(gson.toJson(jsonUtil));

        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("只能通过前端VUE项目访问该 Servlet实现用户登录");
            out.print(gson.toJson(jsonUtil));
        }


    }
}
